/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package bean;

import dao.ClienteDAO;
import dao.EstadoDAO;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import model.Cliente;
import model.Estado;

/**
 *
 * @author Sunder
 */
@ManagedBean
@RequestScoped
public class BeanCadastroCliente {
   
    private Cliente cliente;
    private DataModel listaClientes;
    private List<Estado> estados;
    private Estado estadoSelecionado;
    private Long id = null;
    
    
    /**
     * Creates a new instance of BeanCadastroCliente
     */
    public BeanCadastroCliente() {
        cliente = new Cliente();
        estados = new ArrayList<Estado>();
        estadoSelecionado = null;
        id=null;
    }

    public Cliente getCliente() {
        return cliente;
    }

    public void setCliente(Cliente cliente) {
        this.cliente = cliente;
    }

    public Estado getEstadoSelecionado() {
        return estadoSelecionado;
    }

    public DataModel getListaClientes() {
        ClienteDAO clienteDAO = new ClienteDAO();
        try {
            listaClientes = new ListDataModel(clienteDAO.getList());
        } catch (Exception e) {
            System.out.println(e);
        }
        return listaClientes;
    }

    public void setListaClientes(DataModel listaClientes) {
        this.listaClientes = listaClientes;
    }
    
    public void setEstadoSelecionado(Estado estadoSelecionado) {
        this.estadoSelecionado = estadoSelecionado;
    }

    public List<Estado> getEstados() {
        EstadoDAO estadoDAO = new EstadoDAO();
        try {
            this.estados = estadoDAO.getList();
        } catch (Exception e) {
        }
        return estados;
    }

    public void setEstados(List<Estado> estados) {
        this.estados = estados;
    }
    
    public void alterarCliente(){
        ClienteDAO clienteDAO = new ClienteDAO();
        cliente.setEstado(estadoSelecionado);
        cliente.setId(id);        
        try {
            clienteDAO.alterarCliente(cliente);
        } catch (Exception ex) {
            Logger.getLogger(BeanCadastroCliente.class.getName()).log(Level.SEVERE, null, ex);
        }
        novoCliente();
    }
    
    public void cadastrarCliente(){
        ClienteDAO clienteDAO = new ClienteDAO();
        cliente.setEstado(estadoSelecionado);
        try {
            clienteDAO.inserirCliente(cliente);
        } catch (Exception ex) {
            Logger.getLogger(BeanCadastroCliente.class.getName()).log(Level.SEVERE, null, ex);
        }
        novoCliente();
    }
    
    public void preparaAlteracao(){
        cliente = (Cliente)(listaClientes.getRowData());
        estadoSelecionado = cliente.getEstado();
        id = cliente.getId();
    }
    
    public void excluirCliente(){
        ClienteDAO clienteDAO = new ClienteDAO();
        try {
            clienteDAO.deletarCliente((Cliente)(listaClientes.getRowData()));
        } catch (Exception e) {
            System.out.println("Erro: "+e);
        }
    }
    
    public void novoCliente(){
        cliente = null;
        cliente = new Cliente();
    }
    
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }
}
